<?php
namespace Modules\Buy\Http\Controllers;

use App\Http\Controllers\Controller;
use Illuminate\Http\Request;
use Modules\Buy\Entities\Arr;
use Modules\Buy\Entities\Catearr;
use Modules\Buy\Entities\Catego;
use Modules\Buy\Http\Requests\CategoRequest;
class CategoController extends Controller
{
    //显示列表
    public function index(Catego $catego)
    {
//        $data = Catego::paginate(10);
        $data = $catego->cateTree();
        return view('buy::catego.index', compact('data'));
    }

    //创建视图
    public function create(Catego $catego)
    {
//        返回的是create的视图
//        dd(123);
//        获得树状图的level值
        $cates = $catego->cateTree();
//        获得可用属性
//        dd($cates);
        $cg = Arr::where('pid',0)->get();
//        dd($cg);
        return view('buy::catego.create',compact('catego','cates','cg'));
    }

    //保存数据
    public function store(CategoRequest $request,Catego $catego)
    {
//        存分类表的同时把中间表存进去
        $post = $request->all();
//        dd($post);
        $catego->fill($request->all());
        $catego->save();

//        判断是不是三级分类，是三级分类的话就存进去
        if (isset($post['attrs'])) {
            foreach ($post['attrs'] as $v) {
                Catearr::create(
                    [
                        'cid' => $catego['id'],
                        'aid' => $v,
                    ]
                );
            }
        }

        return redirect('/buy/catego')->with('success', '保存成功');
    }

    //显示记录
    public function show(Catego $field)
    {
        return view('buy::catego.show', compact('field'));
    }

    //编辑视图
    public function edit(Catego $catego)
    {

//        最后判断编辑的时候如果同是二级就不能显示


//        dd($catego->cateTree());
//        dd($catego->toArray());
//        编辑视图
        $cates = $catego->cateTree($catego);
//        获得可用属性
        $cg = Arr::where('pid',0)->get();
//        dd($cg->toArray());
//        判断中间表里面的第三级,如果是一二级就不要让可用属性显示
        $cata = Catearr::where('cid',$catego['id'])->get();
//        dd($cata->toArray());
        if ($cata->toArray()){
//            dd($cata);
            $show = 'show';
        }else{
            $show = 'hide';
        }
//        dd($show);
        //获取当前分类可用属性id，谁被约束外键约束就加给谁，中间表被分类表约束所
        $attrid = Catearr::where('cid',$catego['id'])->pluck('aid')->toArray();
        return view('buy::catego.edit', compact('catego','cates','cg','attrid','show'));
    }

    //更新数据
    public function update(CategoRequest $request, Catego $catego)
    {
//        dd($request->all());
        $post = $request->all();
        $catego->update($post);
//        修改分类属性中间表,先删除，再添加,不能只更新分类表，汗得更新中间表
//        弄清楚旧数据，新数据，$k,$v
        Catearr::where('cid',$catego['id'])->delete();
        foreach ($post['attrs'] as $v){
//           dump($v);
            Catearr::create([
               'cid'=>$catego['id'],
               'aid'=>$v
            ]);
        }
        return redirect('/buy/catego')->with('success','更新成功');
    }

    //删除模型
    public function destroy(Catego $catego)
    {
//        数组增强，判断是否有子栏目,注意他需要传递参数
        $res = $catego->haslanmu($catego['id']);
//        dd($res);
//        dd($res);
//        判断它里边有没有子栏目，有就弹出先删除子栏目
        if ($res){
            session()->flash('danger','请先删除子栏目再删除我');
            return back();
        }else{
            $catego->delete();
            return redirect('buy/catego')->with('success','删除成功');
        }
    }
}
